{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "682b6eaa",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import sys\n",
    "import os\n",
    "import ast\n",
    "import numpy as np\n",
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "from sklearn.feature_extraction.text import TfidfTransformer\n",
    "import pandas as pd\n",
    "path = os.getcwd()\n",
    "train_data = str(sys.argv)[1]\n",
    "validation_data = str(sys.argv)[2]\n",
    "train_data_path = os.path.join(path, train_data)\n",
    "validation_data_path = os.path.join(path, validation_data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "504f8147",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_df = pd.read_csv('training.csv')\n",
    "validation_df = pd.read_csv('validation.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "604921d9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 2100 entries, 0 to 2099\n",
      "Data columns (total 19 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   movie_id              2100 non-null   int64  \n",
      " 1   cast                  2100 non-null   object \n",
      " 2   crew                  2100 non-null   object \n",
      " 3   budget                2100 non-null   int64  \n",
      " 4   genres                2100 non-null   object \n",
      " 5   homepage              955 non-null    object \n",
      " 6   keywords              2100 non-null   object \n",
      " 7   original_language     2100 non-null   object \n",
      " 8   original_title        2100 non-null   object \n",
      " 9   overview              2100 non-null   object \n",
      " 10  production_companies  2100 non-null   object \n",
      " 11  production_countries  2100 non-null   object \n",
      " 12  release_date          2100 non-null   object \n",
      " 13  revenue               2100 non-null   int64  \n",
      " 14  runtime               2100 non-null   float64\n",
      " 15  spoken_languages      2100 non-null   object \n",
      " 16  status                2100 non-null   object \n",
      " 17  tagline               2001 non-null   object \n",
      " 18  rating                2100 non-null   int64  \n",
      "dtypes: float64(1), int64(4), object(14)\n",
      "memory usage: 311.8+ KB\n"
     ]
    }
   ],
   "source": [
    "train_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "451257bd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 400 entries, 0 to 399\n",
      "Data columns (total 19 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   movie_id              400 non-null    int64  \n",
      " 1   cast                  400 non-null    object \n",
      " 2   crew                  400 non-null    object \n",
      " 3   budget                400 non-null    int64  \n",
      " 4   genres                400 non-null    object \n",
      " 5   homepage              135 non-null    object \n",
      " 6   keywords              400 non-null    object \n",
      " 7   original_language     400 non-null    object \n",
      " 8   original_title        400 non-null    object \n",
      " 9   overview              400 non-null    object \n",
      " 10  production_companies  400 non-null    object \n",
      " 11  production_countries  400 non-null    object \n",
      " 12  release_date          400 non-null    object \n",
      " 13  revenue               400 non-null    int64  \n",
      " 14  runtime               400 non-null    float64\n",
      " 15  spoken_languages      400 non-null    object \n",
      " 16  status                400 non-null    object \n",
      " 17  tagline               361 non-null    object \n",
      " 18  rating                400 non-null    int64  \n",
      "dtypes: float64(1), int64(4), object(14)\n",
      "memory usage: 59.5+ KB\n"
     ]
    }
   ],
   "source": [
    "validation_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "51cc26ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "9de1716f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<AxesSubplot:title={'center':'movie_id'}>,\n",
       "        <AxesSubplot:title={'center':'budget'}>],\n",
       "       [<AxesSubplot:title={'center':'revenue'}>,\n",
       "        <AxesSubplot:title={'center':'runtime'}>],\n",
       "       [<AxesSubplot:title={'center':'rating'}>, <AxesSubplot:>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x648 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_df.hist(bins=80,figsize=(16,9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "77ea5d49",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[<AxesSubplot:title={'center':'movie_id'}>,\n",
       "        <AxesSubplot:title={'center':'budget'}>],\n",
       "       [<AxesSubplot:title={'center':'revenue'}>,\n",
       "        <AxesSubplot:title={'center':'runtime'}>],\n",
       "       [<AxesSubplot:title={'center':'rating'}>, <AxesSubplot:>]],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x648 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "validation_df.hist(bins=80,figsize=(16,9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "b1bfa2e0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movie_id                   0\n",
       "cast                       0\n",
       "crew                       0\n",
       "budget                     0\n",
       "genres                     0\n",
       "homepage                1145\n",
       "keywords                   0\n",
       "original_language          0\n",
       "original_title             0\n",
       "overview                   0\n",
       "production_companies       0\n",
       "production_countries       0\n",
       "release_date               0\n",
       "revenue                    0\n",
       "runtime                    0\n",
       "spoken_languages           0\n",
       "status                     0\n",
       "tagline                   99\n",
       "rating                     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.isna().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "b6357bed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movie_id                  0\n",
       "cast                      0\n",
       "crew                      0\n",
       "budget                    0\n",
       "genres                    0\n",
       "homepage                265\n",
       "keywords                  0\n",
       "original_language         0\n",
       "original_title            0\n",
       "overview                  0\n",
       "production_companies      0\n",
       "production_countries      0\n",
       "release_date              0\n",
       "revenue                   0\n",
       "runtime                   0\n",
       "spoken_languages          0\n",
       "status                    0\n",
       "tagline                  39\n",
       "rating                    0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "validation_df.isna().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "c1bfd559",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       3\n",
       "1       3\n",
       "2       3\n",
       "3       3\n",
       "4       3\n",
       "       ..\n",
       "2095    2\n",
       "2096    3\n",
       "2097    2\n",
       "2098    3\n",
       "2099    2\n",
       "Name: rating, Length: 2100, dtype: int64"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.rating"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "9cd878b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>movie_id</th>\n",
       "      <th>cast</th>\n",
       "      <th>crew</th>\n",
       "      <th>budget</th>\n",
       "      <th>genres</th>\n",
       "      <th>homepage</th>\n",
       "      <th>keywords</th>\n",
       "      <th>original_language</th>\n",
       "      <th>original_title</th>\n",
       "      <th>overview</th>\n",
       "      <th>production_companies</th>\n",
       "      <th>production_countries</th>\n",
       "      <th>release_date</th>\n",
       "      <th>revenue</th>\n",
       "      <th>runtime</th>\n",
       "      <th>spoken_languages</th>\n",
       "      <th>status</th>\n",
       "      <th>tagline</th>\n",
       "      <th>rating</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2095</th>\n",
       "      <td>9594</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"Alex / Chad Wagn...</td>\n",
       "      <td>[{\"credit_id\": \"52fe450ec3a36847f80b9d6f\", \"de...</td>\n",
       "      <td>15000000</td>\n",
       "      <td>[{\"id\": 53, \"name\": \"Thriller\"}, {\"id\": 28, \"n...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 2143, \"name\": \"loss of parents\"}, {\"id...</td>\n",
       "      <td>en</td>\n",
       "      <td>Double Impact</td>\n",
       "      <td>Jean Claude Van Damme plays a dual role as Ale...</td>\n",
       "      <td>[{\"name\": \"Stone Group Pictures\", \"id\": 3470}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>1991-08-10</td>\n",
       "      <td>30102717</td>\n",
       "      <td>110.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Two brothers separated by the violence. Now to...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2096</th>\n",
       "      <td>4638</td>\n",
       "      <td>[{\"cast_id\": 40, \"character\": \"Nicholas Angel\"...</td>\n",
       "      <td>[{\"credit_id\": \"569d89b6c3a36858e5004c66\", \"de...</td>\n",
       "      <td>12000000</td>\n",
       "      <td>[{\"id\": 80, \"name\": \"Crime\"}, {\"id\": 28, \"name...</td>\n",
       "      <td>http://www.universalstudiosentertainment.com/h...</td>\n",
       "      <td>[{\"id\": 5331, \"name\": \"village\"}, {\"id\": 5638,...</td>\n",
       "      <td>en</td>\n",
       "      <td>Hot Fuzz</td>\n",
       "      <td>Top London cop, PC Nicholas Angel is good. Too...</td>\n",
       "      <td>[{\"name\": \"Universal Pictures\", \"id\": 33}, {\"n...</td>\n",
       "      <td>[{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"}]</td>\n",
       "      <td>2007-02-14</td>\n",
       "      <td>80573774</td>\n",
       "      <td>121.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Big cops. Small town. Moderate violence.</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2097</th>\n",
       "      <td>13972</td>\n",
       "      <td>[{\"cast_id\": 9, \"character\": \"Maggie\", \"credit...</td>\n",
       "      <td>[{\"credit_id\": \"52fe45be9251416c75060e61\", \"de...</td>\n",
       "      <td>16000000</td>\n",
       "      <td>[{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...</td>\n",
       "      <td>http://thewomen.warnerbros.com/index.html</td>\n",
       "      <td>[{\"id\": 9749, \"name\": \"beauty salon\"}, {\"id\": ...</td>\n",
       "      <td>en</td>\n",
       "      <td>The Women</td>\n",
       "      <td>The story centers on a group of gossipy, high-...</td>\n",
       "      <td>[{\"name\": \"New Line Cinema\", \"id\": 12}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2008-09-12</td>\n",
       "      <td>50007546</td>\n",
       "      <td>114.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2098</th>\n",
       "      <td>5038</td>\n",
       "      <td>[{\"cast_id\": 3, \"character\": \"Cristina\", \"cred...</td>\n",
       "      <td>[{\"credit_id\": \"52fe43eec3a36847f80792ad\", \"de...</td>\n",
       "      <td>15000000</td>\n",
       "      <td>[{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"n...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 107, \"name\": \"barcelona spain\"}, {\"id\"...</td>\n",
       "      <td>en</td>\n",
       "      <td>Vicky Cristina Barcelona</td>\n",
       "      <td>Two girlfriends on a summer holiday in Spain b...</td>\n",
       "      <td>[{\"name\": \"The Weinstein Company\", \"id\": 308},...</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2008-08-15</td>\n",
       "      <td>96408652</td>\n",
       "      <td>96.0</td>\n",
       "      <td>[{\"iso_639_1\": \"es\", \"name\": \"Espa\\u00f1ol\"}, ...</td>\n",
       "      <td>Released</td>\n",
       "      <td>Life is the ultimate work of art</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2099</th>\n",
       "      <td>10571</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"Ryan Walker\", \"c...</td>\n",
       "      <td>[{\"credit_id\": \"58c2bd94c3a36842e80114ed\", \"de...</td>\n",
       "      <td>16000000</td>\n",
       "      <td>[{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 815, \"name\": \"soulmates\"}, {\"id\": 1605...</td>\n",
       "      <td>en</td>\n",
       "      <td>Boys and Girls</td>\n",
       "      <td>Ryan and Jennifer are opposites who definitely...</td>\n",
       "      <td>[{\"name\": \"Punch 21 Productions\", \"id\": 13158}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2000-06-16</td>\n",
       "      <td>20627372</td>\n",
       "      <td>94.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Warning: Sex Changes Everything</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      movie_id                                               cast  \\\n",
       "2095      9594  [{\"cast_id\": 1, \"character\": \"Alex / Chad Wagn...   \n",
       "2096      4638  [{\"cast_id\": 40, \"character\": \"Nicholas Angel\"...   \n",
       "2097     13972  [{\"cast_id\": 9, \"character\": \"Maggie\", \"credit...   \n",
       "2098      5038  [{\"cast_id\": 3, \"character\": \"Cristina\", \"cred...   \n",
       "2099     10571  [{\"cast_id\": 1, \"character\": \"Ryan Walker\", \"c...   \n",
       "\n",
       "                                                   crew    budget  \\\n",
       "2095  [{\"credit_id\": \"52fe450ec3a36847f80b9d6f\", \"de...  15000000   \n",
       "2096  [{\"credit_id\": \"569d89b6c3a36858e5004c66\", \"de...  12000000   \n",
       "2097  [{\"credit_id\": \"52fe45be9251416c75060e61\", \"de...  16000000   \n",
       "2098  [{\"credit_id\": \"52fe43eec3a36847f80792ad\", \"de...  15000000   \n",
       "2099  [{\"credit_id\": \"58c2bd94c3a36842e80114ed\", \"de...  16000000   \n",
       "\n",
       "                                                 genres  \\\n",
       "2095  [{\"id\": 53, \"name\": \"Thriller\"}, {\"id\": 28, \"n...   \n",
       "2096  [{\"id\": 80, \"name\": \"Crime\"}, {\"id\": 28, \"name...   \n",
       "2097  [{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...   \n",
       "2098  [{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"n...   \n",
       "2099  [{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...   \n",
       "\n",
       "                                               homepage  \\\n",
       "2095                                                NaN   \n",
       "2096  http://www.universalstudiosentertainment.com/h...   \n",
       "2097          http://thewomen.warnerbros.com/index.html   \n",
       "2098                                                NaN   \n",
       "2099                                                NaN   \n",
       "\n",
       "                                               keywords original_language  \\\n",
       "2095  [{\"id\": 2143, \"name\": \"loss of parents\"}, {\"id...                en   \n",
       "2096  [{\"id\": 5331, \"name\": \"village\"}, {\"id\": 5638,...                en   \n",
       "2097  [{\"id\": 9749, \"name\": \"beauty salon\"}, {\"id\": ...                en   \n",
       "2098  [{\"id\": 107, \"name\": \"barcelona spain\"}, {\"id\"...                en   \n",
       "2099  [{\"id\": 815, \"name\": \"soulmates\"}, {\"id\": 1605...                en   \n",
       "\n",
       "                original_title  \\\n",
       "2095             Double Impact   \n",
       "2096                  Hot Fuzz   \n",
       "2097                 The Women   \n",
       "2098  Vicky Cristina Barcelona   \n",
       "2099            Boys and Girls   \n",
       "\n",
       "                                               overview  \\\n",
       "2095  Jean Claude Van Damme plays a dual role as Ale...   \n",
       "2096  Top London cop, PC Nicholas Angel is good. Too...   \n",
       "2097  The story centers on a group of gossipy, high-...   \n",
       "2098  Two girlfriends on a summer holiday in Spain b...   \n",
       "2099  Ryan and Jennifer are opposites who definitely...   \n",
       "\n",
       "                                   production_companies  \\\n",
       "2095     [{\"name\": \"Stone Group Pictures\", \"id\": 3470}]   \n",
       "2096  [{\"name\": \"Universal Pictures\", \"id\": 33}, {\"n...   \n",
       "2097            [{\"name\": \"New Line Cinema\", \"id\": 12}]   \n",
       "2098  [{\"name\": \"The Weinstein Company\", \"id\": 308},...   \n",
       "2099    [{\"name\": \"Punch 21 Productions\", \"id\": 13158}]   \n",
       "\n",
       "                                   production_countries release_date  \\\n",
       "2095  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   1991-08-10   \n",
       "2096   [{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"}]   2007-02-14   \n",
       "2097  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2008-09-12   \n",
       "2098  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2008-08-15   \n",
       "2099  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2000-06-16   \n",
       "\n",
       "       revenue  runtime                                   spoken_languages  \\\n",
       "2095  30102717    110.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2096  80573774    121.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2097  50007546    114.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2098  96408652     96.0  [{\"iso_639_1\": \"es\", \"name\": \"Espa\\u00f1ol\"}, ...   \n",
       "2099  20627372     94.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "\n",
       "        status                                            tagline  rating  \n",
       "2095  Released  Two brothers separated by the violence. Now to...       2  \n",
       "2096  Released           Big cops. Small town. Moderate violence.       3  \n",
       "2097  Released                                                NaN       2  \n",
       "2098  Released                   Life is the ultimate work of art       3  \n",
       "2099  Released                    Warning: Sex Changes Everything       2  "
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.tail()\n",
    "# train_df = train_df[train_df.rating >= 2]\n",
    "# train_df.reindex()\n",
    "# train_df.drop(train_df.rating[np.where(df.rating < 2)[0]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "409343e5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>movie_id</th>\n",
       "      <th>cast</th>\n",
       "      <th>crew</th>\n",
       "      <th>budget</th>\n",
       "      <th>genres</th>\n",
       "      <th>homepage</th>\n",
       "      <th>keywords</th>\n",
       "      <th>original_language</th>\n",
       "      <th>original_title</th>\n",
       "      <th>overview</th>\n",
       "      <th>production_companies</th>\n",
       "      <th>production_countries</th>\n",
       "      <th>release_date</th>\n",
       "      <th>revenue</th>\n",
       "      <th>runtime</th>\n",
       "      <th>spoken_languages</th>\n",
       "      <th>status</th>\n",
       "      <th>tagline</th>\n",
       "      <th>rating</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2095</th>\n",
       "      <td>9594</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"Alex / Chad Wagn...</td>\n",
       "      <td>[{\"credit_id\": \"52fe450ec3a36847f80b9d6f\", \"de...</td>\n",
       "      <td>15000000</td>\n",
       "      <td>[{\"id\": 53, \"name\": \"Thriller\"}, {\"id\": 28, \"n...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 2143, \"name\": \"loss of parents\"}, {\"id...</td>\n",
       "      <td>en</td>\n",
       "      <td>Double Impact</td>\n",
       "      <td>Jean Claude Van Damme plays a dual role as Ale...</td>\n",
       "      <td>[{\"name\": \"Stone Group Pictures\", \"id\": 3470}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>1991-08-10</td>\n",
       "      <td>30102717</td>\n",
       "      <td>110.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Two brothers separated by the violence. Now to...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2096</th>\n",
       "      <td>4638</td>\n",
       "      <td>[{\"cast_id\": 40, \"character\": \"Nicholas Angel\"...</td>\n",
       "      <td>[{\"credit_id\": \"569d89b6c3a36858e5004c66\", \"de...</td>\n",
       "      <td>12000000</td>\n",
       "      <td>[{\"id\": 80, \"name\": \"Crime\"}, {\"id\": 28, \"name...</td>\n",
       "      <td>http://www.universalstudiosentertainment.com/h...</td>\n",
       "      <td>[{\"id\": 5331, \"name\": \"village\"}, {\"id\": 5638,...</td>\n",
       "      <td>en</td>\n",
       "      <td>Hot Fuzz</td>\n",
       "      <td>Top London cop, PC Nicholas Angel is good. Too...</td>\n",
       "      <td>[{\"name\": \"Universal Pictures\", \"id\": 33}, {\"n...</td>\n",
       "      <td>[{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"}]</td>\n",
       "      <td>2007-02-14</td>\n",
       "      <td>80573774</td>\n",
       "      <td>121.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Big cops. Small town. Moderate violence.</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2097</th>\n",
       "      <td>13972</td>\n",
       "      <td>[{\"cast_id\": 9, \"character\": \"Maggie\", \"credit...</td>\n",
       "      <td>[{\"credit_id\": \"52fe45be9251416c75060e61\", \"de...</td>\n",
       "      <td>16000000</td>\n",
       "      <td>[{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...</td>\n",
       "      <td>http://thewomen.warnerbros.com/index.html</td>\n",
       "      <td>[{\"id\": 9749, \"name\": \"beauty salon\"}, {\"id\": ...</td>\n",
       "      <td>en</td>\n",
       "      <td>The Women</td>\n",
       "      <td>The story centers on a group of gossipy, high-...</td>\n",
       "      <td>[{\"name\": \"New Line Cinema\", \"id\": 12}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2008-09-12</td>\n",
       "      <td>50007546</td>\n",
       "      <td>114.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2098</th>\n",
       "      <td>5038</td>\n",
       "      <td>[{\"cast_id\": 3, \"character\": \"Cristina\", \"cred...</td>\n",
       "      <td>[{\"credit_id\": \"52fe43eec3a36847f80792ad\", \"de...</td>\n",
       "      <td>15000000</td>\n",
       "      <td>[{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"n...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 107, \"name\": \"barcelona spain\"}, {\"id\"...</td>\n",
       "      <td>en</td>\n",
       "      <td>Vicky Cristina Barcelona</td>\n",
       "      <td>Two girlfriends on a summer holiday in Spain b...</td>\n",
       "      <td>[{\"name\": \"The Weinstein Company\", \"id\": 308},...</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2008-08-15</td>\n",
       "      <td>96408652</td>\n",
       "      <td>96.0</td>\n",
       "      <td>[{\"iso_639_1\": \"es\", \"name\": \"Espa\\u00f1ol\"}, ...</td>\n",
       "      <td>Released</td>\n",
       "      <td>Life is the ultimate work of art</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2099</th>\n",
       "      <td>10571</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"Ryan Walker\", \"c...</td>\n",
       "      <td>[{\"credit_id\": \"58c2bd94c3a36842e80114ed\", \"de...</td>\n",
       "      <td>16000000</td>\n",
       "      <td>[{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 815, \"name\": \"soulmates\"}, {\"id\": 1605...</td>\n",
       "      <td>en</td>\n",
       "      <td>Boys and Girls</td>\n",
       "      <td>Ryan and Jennifer are opposites who definitely...</td>\n",
       "      <td>[{\"name\": \"Punch 21 Productions\", \"id\": 13158}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2000-06-16</td>\n",
       "      <td>20627372</td>\n",
       "      <td>94.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Warning: Sex Changes Everything</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      movie_id                                               cast  \\\n",
       "2095      9594  [{\"cast_id\": 1, \"character\": \"Alex / Chad Wagn...   \n",
       "2096      4638  [{\"cast_id\": 40, \"character\": \"Nicholas Angel\"...   \n",
       "2097     13972  [{\"cast_id\": 9, \"character\": \"Maggie\", \"credit...   \n",
       "2098      5038  [{\"cast_id\": 3, \"character\": \"Cristina\", \"cred...   \n",
       "2099     10571  [{\"cast_id\": 1, \"character\": \"Ryan Walker\", \"c...   \n",
       "\n",
       "                                                   crew    budget  \\\n",
       "2095  [{\"credit_id\": \"52fe450ec3a36847f80b9d6f\", \"de...  15000000   \n",
       "2096  [{\"credit_id\": \"569d89b6c3a36858e5004c66\", \"de...  12000000   \n",
       "2097  [{\"credit_id\": \"52fe45be9251416c75060e61\", \"de...  16000000   \n",
       "2098  [{\"credit_id\": \"52fe43eec3a36847f80792ad\", \"de...  15000000   \n",
       "2099  [{\"credit_id\": \"58c2bd94c3a36842e80114ed\", \"de...  16000000   \n",
       "\n",
       "                                                 genres  \\\n",
       "2095  [{\"id\": 53, \"name\": \"Thriller\"}, {\"id\": 28, \"n...   \n",
       "2096  [{\"id\": 80, \"name\": \"Crime\"}, {\"id\": 28, \"name...   \n",
       "2097  [{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...   \n",
       "2098  [{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"n...   \n",
       "2099  [{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...   \n",
       "\n",
       "                                               homepage  \\\n",
       "2095                                                NaN   \n",
       "2096  http://www.universalstudiosentertainment.com/h...   \n",
       "2097          http://thewomen.warnerbros.com/index.html   \n",
       "2098                                                NaN   \n",
       "2099                                                NaN   \n",
       "\n",
       "                                               keywords original_language  \\\n",
       "2095  [{\"id\": 2143, \"name\": \"loss of parents\"}, {\"id...                en   \n",
       "2096  [{\"id\": 5331, \"name\": \"village\"}, {\"id\": 5638,...                en   \n",
       "2097  [{\"id\": 9749, \"name\": \"beauty salon\"}, {\"id\": ...                en   \n",
       "2098  [{\"id\": 107, \"name\": \"barcelona spain\"}, {\"id\"...                en   \n",
       "2099  [{\"id\": 815, \"name\": \"soulmates\"}, {\"id\": 1605...                en   \n",
       "\n",
       "                original_title  \\\n",
       "2095             Double Impact   \n",
       "2096                  Hot Fuzz   \n",
       "2097                 The Women   \n",
       "2098  Vicky Cristina Barcelona   \n",
       "2099            Boys and Girls   \n",
       "\n",
       "                                               overview  \\\n",
       "2095  Jean Claude Van Damme plays a dual role as Ale...   \n",
       "2096  Top London cop, PC Nicholas Angel is good. Too...   \n",
       "2097  The story centers on a group of gossipy, high-...   \n",
       "2098  Two girlfriends on a summer holiday in Spain b...   \n",
       "2099  Ryan and Jennifer are opposites who definitely...   \n",
       "\n",
       "                                   production_companies  \\\n",
       "2095     [{\"name\": \"Stone Group Pictures\", \"id\": 3470}]   \n",
       "2096  [{\"name\": \"Universal Pictures\", \"id\": 33}, {\"n...   \n",
       "2097            [{\"name\": \"New Line Cinema\", \"id\": 12}]   \n",
       "2098  [{\"name\": \"The Weinstein Company\", \"id\": 308},...   \n",
       "2099    [{\"name\": \"Punch 21 Productions\", \"id\": 13158}]   \n",
       "\n",
       "                                   production_countries release_date  \\\n",
       "2095  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   1991-08-10   \n",
       "2096   [{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"}]   2007-02-14   \n",
       "2097  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2008-09-12   \n",
       "2098  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2008-08-15   \n",
       "2099  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2000-06-16   \n",
       "\n",
       "       revenue  runtime                                   spoken_languages  \\\n",
       "2095  30102717    110.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2096  80573774    121.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2097  50007546    114.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2098  96408652     96.0  [{\"iso_639_1\": \"es\", \"name\": \"Espa\\u00f1ol\"}, ...   \n",
       "2099  20627372     94.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "\n",
       "        status                                            tagline  rating  \n",
       "2095  Released  Two brothers separated by the violence. Now to...       2  \n",
       "2096  Released           Big cops. Small town. Moderate violence.       3  \n",
       "2097  Released                                                NaN       2  \n",
       "2098  Released                   Life is the ultimate work of art       3  \n",
       "2099  Released                    Warning: Sex Changes Everything       2  "
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df = train_df[train_df.rating>=2]\n",
    "train_df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "6652e22a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>movie_id</th>\n",
       "      <th>cast</th>\n",
       "      <th>crew</th>\n",
       "      <th>budget</th>\n",
       "      <th>genres</th>\n",
       "      <th>homepage</th>\n",
       "      <th>keywords</th>\n",
       "      <th>original_language</th>\n",
       "      <th>original_title</th>\n",
       "      <th>overview</th>\n",
       "      <th>production_companies</th>\n",
       "      <th>production_countries</th>\n",
       "      <th>release_date</th>\n",
       "      <th>revenue</th>\n",
       "      <th>runtime</th>\n",
       "      <th>spoken_languages</th>\n",
       "      <th>status</th>\n",
       "      <th>tagline</th>\n",
       "      <th>rating</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2095</th>\n",
       "      <td>9594</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"Alex / Chad Wagn...</td>\n",
       "      <td>[{\"credit_id\": \"52fe450ec3a36847f80b9d6f\", \"de...</td>\n",
       "      <td>15000000</td>\n",
       "      <td>[{\"id\": 53, \"name\": \"Thriller\"}, {\"id\": 28, \"n...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 2143, \"name\": \"loss of parents\"}, {\"id...</td>\n",
       "      <td>en</td>\n",
       "      <td>Double Impact</td>\n",
       "      <td>Jean Claude Van Damme plays a dual role as Ale...</td>\n",
       "      <td>[{\"name\": \"Stone Group Pictures\", \"id\": 3470}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>1991-08-10</td>\n",
       "      <td>30102717</td>\n",
       "      <td>110.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Two brothers separated by the violence. Now to...</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2096</th>\n",
       "      <td>4638</td>\n",
       "      <td>[{\"cast_id\": 40, \"character\": \"Nicholas Angel\"...</td>\n",
       "      <td>[{\"credit_id\": \"569d89b6c3a36858e5004c66\", \"de...</td>\n",
       "      <td>12000000</td>\n",
       "      <td>[{\"id\": 80, \"name\": \"Crime\"}, {\"id\": 28, \"name...</td>\n",
       "      <td>http://www.universalstudiosentertainment.com/h...</td>\n",
       "      <td>[{\"id\": 5331, \"name\": \"village\"}, {\"id\": 5638,...</td>\n",
       "      <td>en</td>\n",
       "      <td>Hot Fuzz</td>\n",
       "      <td>Top London cop, PC Nicholas Angel is good. Too...</td>\n",
       "      <td>[{\"name\": \"Universal Pictures\", \"id\": 33}, {\"n...</td>\n",
       "      <td>[{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"}]</td>\n",
       "      <td>2007-02-14</td>\n",
       "      <td>80573774</td>\n",
       "      <td>121.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Big cops. Small town. Moderate violence.</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2097</th>\n",
       "      <td>13972</td>\n",
       "      <td>[{\"cast_id\": 9, \"character\": \"Maggie\", \"credit...</td>\n",
       "      <td>[{\"credit_id\": \"52fe45be9251416c75060e61\", \"de...</td>\n",
       "      <td>16000000</td>\n",
       "      <td>[{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...</td>\n",
       "      <td>http://thewomen.warnerbros.com/index.html</td>\n",
       "      <td>[{\"id\": 9749, \"name\": \"beauty salon\"}, {\"id\": ...</td>\n",
       "      <td>en</td>\n",
       "      <td>The Women</td>\n",
       "      <td>The story centers on a group of gossipy, high-...</td>\n",
       "      <td>[{\"name\": \"New Line Cinema\", \"id\": 12}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2008-09-12</td>\n",
       "      <td>50007546</td>\n",
       "      <td>114.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>NaN</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2098</th>\n",
       "      <td>5038</td>\n",
       "      <td>[{\"cast_id\": 3, \"character\": \"Cristina\", \"cred...</td>\n",
       "      <td>[{\"credit_id\": \"52fe43eec3a36847f80792ad\", \"de...</td>\n",
       "      <td>15000000</td>\n",
       "      <td>[{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"n...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 107, \"name\": \"barcelona spain\"}, {\"id\"...</td>\n",
       "      <td>en</td>\n",
       "      <td>Vicky Cristina Barcelona</td>\n",
       "      <td>Two girlfriends on a summer holiday in Spain b...</td>\n",
       "      <td>[{\"name\": \"The Weinstein Company\", \"id\": 308},...</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2008-08-15</td>\n",
       "      <td>96408652</td>\n",
       "      <td>96.0</td>\n",
       "      <td>[{\"iso_639_1\": \"es\", \"name\": \"Espa\\u00f1ol\"}, ...</td>\n",
       "      <td>Released</td>\n",
       "      <td>Life is the ultimate work of art</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2099</th>\n",
       "      <td>10571</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"Ryan Walker\", \"c...</td>\n",
       "      <td>[{\"credit_id\": \"58c2bd94c3a36842e80114ed\", \"de...</td>\n",
       "      <td>16000000</td>\n",
       "      <td>[{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>[{\"id\": 815, \"name\": \"soulmates\"}, {\"id\": 1605...</td>\n",
       "      <td>en</td>\n",
       "      <td>Boys and Girls</td>\n",
       "      <td>Ryan and Jennifer are opposites who definitely...</td>\n",
       "      <td>[{\"name\": \"Punch 21 Productions\", \"id\": 13158}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2000-06-16</td>\n",
       "      <td>20627372</td>\n",
       "      <td>94.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Warning: Sex Changes Everything</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      movie_id                                               cast  \\\n",
       "2095      9594  [{\"cast_id\": 1, \"character\": \"Alex / Chad Wagn...   \n",
       "2096      4638  [{\"cast_id\": 40, \"character\": \"Nicholas Angel\"...   \n",
       "2097     13972  [{\"cast_id\": 9, \"character\": \"Maggie\", \"credit...   \n",
       "2098      5038  [{\"cast_id\": 3, \"character\": \"Cristina\", \"cred...   \n",
       "2099     10571  [{\"cast_id\": 1, \"character\": \"Ryan Walker\", \"c...   \n",
       "\n",
       "                                                   crew    budget  \\\n",
       "2095  [{\"credit_id\": \"52fe450ec3a36847f80b9d6f\", \"de...  15000000   \n",
       "2096  [{\"credit_id\": \"569d89b6c3a36858e5004c66\", \"de...  12000000   \n",
       "2097  [{\"credit_id\": \"52fe45be9251416c75060e61\", \"de...  16000000   \n",
       "2098  [{\"credit_id\": \"52fe43eec3a36847f80792ad\", \"de...  15000000   \n",
       "2099  [{\"credit_id\": \"58c2bd94c3a36842e80114ed\", \"de...  16000000   \n",
       "\n",
       "                                                 genres  \\\n",
       "2095  [{\"id\": 53, \"name\": \"Thriller\"}, {\"id\": 28, \"n...   \n",
       "2096  [{\"id\": 80, \"name\": \"Crime\"}, {\"id\": 28, \"name...   \n",
       "2097  [{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...   \n",
       "2098  [{\"id\": 18, \"name\": \"Drama\"}, {\"id\": 10749, \"n...   \n",
       "2099  [{\"id\": 35, \"name\": \"Comedy\"}, {\"id\": 18, \"nam...   \n",
       "\n",
       "                                               homepage  \\\n",
       "2095                                                NaN   \n",
       "2096  http://www.universalstudiosentertainment.com/h...   \n",
       "2097          http://thewomen.warnerbros.com/index.html   \n",
       "2098                                                NaN   \n",
       "2099                                                NaN   \n",
       "\n",
       "                                               keywords original_language  \\\n",
       "2095  [{\"id\": 2143, \"name\": \"loss of parents\"}, {\"id...                en   \n",
       "2096  [{\"id\": 5331, \"name\": \"village\"}, {\"id\": 5638,...                en   \n",
       "2097  [{\"id\": 9749, \"name\": \"beauty salon\"}, {\"id\": ...                en   \n",
       "2098  [{\"id\": 107, \"name\": \"barcelona spain\"}, {\"id\"...                en   \n",
       "2099  [{\"id\": 815, \"name\": \"soulmates\"}, {\"id\": 1605...                en   \n",
       "\n",
       "                original_title  \\\n",
       "2095             Double Impact   \n",
       "2096                  Hot Fuzz   \n",
       "2097                 The Women   \n",
       "2098  Vicky Cristina Barcelona   \n",
       "2099            Boys and Girls   \n",
       "\n",
       "                                               overview  \\\n",
       "2095  Jean Claude Van Damme plays a dual role as Ale...   \n",
       "2096  Top London cop, PC Nicholas Angel is good. Too...   \n",
       "2097  The story centers on a group of gossipy, high-...   \n",
       "2098  Two girlfriends on a summer holiday in Spain b...   \n",
       "2099  Ryan and Jennifer are opposites who definitely...   \n",
       "\n",
       "                                   production_companies  \\\n",
       "2095     [{\"name\": \"Stone Group Pictures\", \"id\": 3470}]   \n",
       "2096  [{\"name\": \"Universal Pictures\", \"id\": 33}, {\"n...   \n",
       "2097            [{\"name\": \"New Line Cinema\", \"id\": 12}]   \n",
       "2098  [{\"name\": \"The Weinstein Company\", \"id\": 308},...   \n",
       "2099    [{\"name\": \"Punch 21 Productions\", \"id\": 13158}]   \n",
       "\n",
       "                                   production_countries release_date  \\\n",
       "2095  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   1991-08-10   \n",
       "2096   [{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"}]   2007-02-14   \n",
       "2097  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2008-09-12   \n",
       "2098  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2008-08-15   \n",
       "2099  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2000-06-16   \n",
       "\n",
       "       revenue  runtime                                   spoken_languages  \\\n",
       "2095  30102717    110.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2096  80573774    121.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2097  50007546    114.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "2098  96408652     96.0  [{\"iso_639_1\": \"es\", \"name\": \"Espa\\u00f1ol\"}, ...   \n",
       "2099  20627372     94.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]   \n",
       "\n",
       "        status                                            tagline  rating  \n",
       "2095  Released  Two brothers separated by the violence. Now to...       2  \n",
       "2096  Released           Big cops. Small town. Moderate violence.       3  \n",
       "2097  Released                                                NaN       2  \n",
       "2098  Released                   Life is the ultimate work of art       3  \n",
       "2099  Released                    Warning: Sex Changes Everything       2  "
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "f670820c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movie_id                   0\n",
       "cast                       0\n",
       "crew                       0\n",
       "budget                     0\n",
       "genres                     0\n",
       "homepage                1145\n",
       "keywords                   0\n",
       "original_language          0\n",
       "original_title             0\n",
       "overview                   0\n",
       "production_companies       0\n",
       "production_countries       0\n",
       "release_date               0\n",
       "revenue                    0\n",
       "runtime                    0\n",
       "spoken_languages           0\n",
       "status                     0\n",
       "tagline                   99\n",
       "rating                     0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.isna().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "baac319c",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train = train_df['revenue']\n",
    "y_train_rating = train_df['rating']\n",
    "y_val = validation_df['revenue']\n",
    "y_val_rating = validation_df['rating']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "3e37f649",
   "metadata": {},
   "outputs": [],
   "source": [
    "rating_effe = train_df.corr()['revenue'].sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "0e41e4e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movie_id    0.054301\n",
       "rating      0.194676\n",
       "runtime     0.221067\n",
       "budget      0.682392\n",
       "revenue     1.000000\n",
       "Name: revenue, dtype: float64"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rating_effe "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "2035b1d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       2009-12-10\n",
       "1       2007-05-19\n",
       "2       2015-10-26\n",
       "3       2012-07-16\n",
       "4       2012-03-07\n",
       "           ...    \n",
       "2095    1991-08-10\n",
       "2096    2007-02-14\n",
       "2097    2008-09-12\n",
       "2098    2008-08-15\n",
       "2099    2000-06-16\n",
       "Name: release_date, Length: 2099, dtype: object"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df['release_date']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "e1b05aa4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def show_limit_columns(train_df,cloumns):\n",
    "    return train_df.copy().filter(items=columns)\n",
    "def datetime_transform(train_df):\n",
    "    results = train_df.copy()\n",
    "    for i in train_df.select_dtypes(include=[np.object]).columns:\n",
    "        try:\n",
    "            results[i] = pd.to_datetime(train_df[i], infer_datetime_format=True)\n",
    "        except:\n",
    "            pass\n",
    "    return results\n",
    "\n",
    "def datetime_to_ymd(train_df):\n",
    "    results = train_df.copy()\n",
    "    for col in results.select_dtypes(include=[np.datetime64]).columns:\n",
    "        results = results.drop([col], axis=1)\n",
    "        try:\n",
    "            results['{0}_y'.format(col)] = train_df[col].dt.year\n",
    "            results['{0}_m'.format(col)] = train_df[col].dt.month\n",
    "            results['{0}_d'.format(col)] = train_df[col].dt.day\n",
    "        except:\n",
    "            pass\n",
    "    return results\n",
    "\n",
    "def extract_out(info, info_name):\n",
    "    if info != np.nan:\n",
    "        feature_name = ast.literal_eval(info)\n",
    "        result = \" \".join(\"{}\".format(x[info_name]).replace(\" \", \"_\") for x in feature_name)\n",
    "        return result\n",
    "    else:\n",
    "        return np.nan\n",
    "def field_out(train_df, columns):\n",
    "    results = train_df.copy()\n",
    "    for col, col_name in columns:\n",
    "        results[col] = results[col].apply(lambda x: extract_out(x, col_name))\n",
    "    return results\n",
    "\n",
    "def encode_text_num(df_columns):\n",
    "    df_columns = df_columns.copy().fillna('')\n",
    "    vectorizer = CountVectorizer()\n",
    "    df_counts = vectorizer.fit_transform(df_columns)\n",
    "    tfidf_transformer = TfidfTransformer()\n",
    "    df_tfidf = tfidf_transformer.fit_transform(df_counts)\n",
    "    df_tfidf = df_tfidf.toarray()\n",
    "    text_nums = np.sum(df_tfidf,axis=1)\n",
    "    return text_nums\n",
    "\n",
    "def text_to_num(train_df):\n",
    "    results = train_df.copy()\n",
    "    for col in train_df.select_dtypes(include=[np.object]):\n",
    "    \n",
    "        results[col] = pd.Series(encode_text_num(results[col]))\n",
    "    return results\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "07be32e3",
   "metadata": {},
   "outputs": [],
   "source": [
    "columns = [(\"cast\", \"name\"),(\"spoken_languages\", \"name\"),(\"keywords\", \"name\"),(\"genres\", \"name\"),(\"crew\", \"name\"),(\"production_companies\", \"name\"),(\"production_countries\",\"name\")]\n",
    "exclude_columns = []\n",
    "x_train = train_df.drop(labels=[\"rating\",\"revenue\",\"movie_id\"]+exclude_columns,axis=1).copy()\n",
    "movies_id = validation_df[\"movie_id\"].copy()\n",
    "\n",
    "x_val = validation_df.drop(labels=[\"rating\",\"revenue\",\"movie_id\"]+exclude_columns,axis=1).copy()\n",
    "x_train = datetime_transform(x_train)\n",
    "x_train = datetime_to_ymd(x_train)\n",
    "x_train = field_out(x_train, columns)\n",
    "x_train = text_to_num(x_train)\n",
    "x_val = datetime_transform(x_val)\n",
    "x_val = datetime_to_ymd(x_val)\n",
    "x_val = field_out(x_val, columns)\n",
    "x_val = text_to_num(x_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "52c75cf2",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train.dropna()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "2105bb34",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cast                    0\n",
       "crew                    0\n",
       "budget                  0\n",
       "genres                  0\n",
       "homepage                0\n",
       "keywords                0\n",
       "original_language       0\n",
       "original_title          0\n",
       "overview                0\n",
       "production_companies    0\n",
       "production_countries    0\n",
       "runtime                 0\n",
       "spoken_languages        0\n",
       "status                  0\n",
       "tagline                 0\n",
       "release_date_y          0\n",
       "release_date_m          0\n",
       "release_date_d          0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.isna().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "c28018ee",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train.drop(y_train.tail(1).index,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "90000b42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    2787965087\n",
       "1     961000000\n",
       "2     880674609\n",
       "3    1084939099\n",
       "4     284139100\n",
       "Name: revenue, dtype: int64"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "ed2e521b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n",
    "scalers = StandardScaler()\n",
    "scalerm = MinMaxScaler()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "7f8e5b63",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>movie_id</th>\n",
       "      <th>cast</th>\n",
       "      <th>crew</th>\n",
       "      <th>budget</th>\n",
       "      <th>genres</th>\n",
       "      <th>homepage</th>\n",
       "      <th>keywords</th>\n",
       "      <th>original_language</th>\n",
       "      <th>original_title</th>\n",
       "      <th>overview</th>\n",
       "      <th>production_companies</th>\n",
       "      <th>production_countries</th>\n",
       "      <th>release_date</th>\n",
       "      <th>revenue</th>\n",
       "      <th>runtime</th>\n",
       "      <th>spoken_languages</th>\n",
       "      <th>status</th>\n",
       "      <th>tagline</th>\n",
       "      <th>rating</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>19995</td>\n",
       "      <td>[{\"cast_id\": 242, \"character\": \"Jake Sully\", \"...</td>\n",
       "      <td>[{\"credit_id\": \"52fe48009251416c750aca23\", \"de...</td>\n",
       "      <td>237000000</td>\n",
       "      <td>[{\"id\": 28, \"name\": \"Action\"}, {\"id\": 12, \"nam...</td>\n",
       "      <td>http://www.avatarmovie.com/</td>\n",
       "      <td>[{\"id\": 1463, \"name\": \"culture clash\"}, {\"id\":...</td>\n",
       "      <td>en</td>\n",
       "      <td>Avatar</td>\n",
       "      <td>In the 22nd century, a paraplegic Marine is di...</td>\n",
       "      <td>[{\"name\": \"Ingenious Film Partners\", \"id\": 289...</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2009-12-10</td>\n",
       "      <td>2787965087</td>\n",
       "      <td>162.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}, {\"iso...</td>\n",
       "      <td>Released</td>\n",
       "      <td>Enter the World of Pandora.</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>285</td>\n",
       "      <td>[{\"cast_id\": 4, \"character\": \"Captain Jack Spa...</td>\n",
       "      <td>[{\"credit_id\": \"52fe4232c3a36847f800b579\", \"de...</td>\n",
       "      <td>300000000</td>\n",
       "      <td>[{\"id\": 12, \"name\": \"Adventure\"}, {\"id\": 14, \"...</td>\n",
       "      <td>http://disney.go.com/disneypictures/pirates/</td>\n",
       "      <td>[{\"id\": 270, \"name\": \"ocean\"}, {\"id\": 726, \"na...</td>\n",
       "      <td>en</td>\n",
       "      <td>Pirates of the Caribbean: At World's End</td>\n",
       "      <td>Captain Barbossa, long believed to be dead, ha...</td>\n",
       "      <td>[{\"name\": \"Walt Disney Pictures\", \"id\": 2}, {\"...</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2007-05-19</td>\n",
       "      <td>961000000</td>\n",
       "      <td>169.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>At the end of the world, the adventure begins.</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>206647</td>\n",
       "      <td>[{\"cast_id\": 1, \"character\": \"James Bond\", \"cr...</td>\n",
       "      <td>[{\"credit_id\": \"54805967c3a36829b5002c41\", \"de...</td>\n",
       "      <td>245000000</td>\n",
       "      <td>[{\"id\": 28, \"name\": \"Action\"}, {\"id\": 12, \"nam...</td>\n",
       "      <td>http://www.sonypictures.com/movies/spectre/</td>\n",
       "      <td>[{\"id\": 470, \"name\": \"spy\"}, {\"id\": 818, \"name...</td>\n",
       "      <td>en</td>\n",
       "      <td>Spectre</td>\n",
       "      <td>A cryptic message from Bond’s past sends him o...</td>\n",
       "      <td>[{\"name\": \"Columbia Pictures\", \"id\": 5}, {\"nam...</td>\n",
       "      <td>[{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"...</td>\n",
       "      <td>2015-10-26</td>\n",
       "      <td>880674609</td>\n",
       "      <td>148.0</td>\n",
       "      <td>[{\"iso_639_1\": \"fr\", \"name\": \"Fran\\u00e7ais\"},...</td>\n",
       "      <td>Released</td>\n",
       "      <td>A Plan No One Escapes</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>49026</td>\n",
       "      <td>[{\"cast_id\": 2, \"character\": \"Bruce Wayne / Ba...</td>\n",
       "      <td>[{\"credit_id\": \"52fe4781c3a36847f81398c3\", \"de...</td>\n",
       "      <td>250000000</td>\n",
       "      <td>[{\"id\": 28, \"name\": \"Action\"}, {\"id\": 80, \"nam...</td>\n",
       "      <td>http://www.thedarkknightrises.com/</td>\n",
       "      <td>[{\"id\": 849, \"name\": \"dc comics\"}, {\"id\": 853,...</td>\n",
       "      <td>en</td>\n",
       "      <td>The Dark Knight Rises</td>\n",
       "      <td>Following the death of District Attorney Harve...</td>\n",
       "      <td>[{\"name\": \"Legendary Pictures\", \"id\": 923}, {\"...</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2012-07-16</td>\n",
       "      <td>1084939099</td>\n",
       "      <td>165.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>The Legend Ends</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>49529</td>\n",
       "      <td>[{\"cast_id\": 5, \"character\": \"John Carter\", \"c...</td>\n",
       "      <td>[{\"credit_id\": \"52fe479ac3a36847f813eaa3\", \"de...</td>\n",
       "      <td>260000000</td>\n",
       "      <td>[{\"id\": 28, \"name\": \"Action\"}, {\"id\": 12, \"nam...</td>\n",
       "      <td>http://movies.disney.com/john-carter</td>\n",
       "      <td>[{\"id\": 818, \"name\": \"based on novel\"}, {\"id\":...</td>\n",
       "      <td>en</td>\n",
       "      <td>John Carter</td>\n",
       "      <td>John Carter is a war-weary, former military ca...</td>\n",
       "      <td>[{\"name\": \"Walt Disney Pictures\", \"id\": 2}]</td>\n",
       "      <td>[{\"iso_3166_1\": \"US\", \"name\": \"United States o...</td>\n",
       "      <td>2012-03-07</td>\n",
       "      <td>284139100</td>\n",
       "      <td>132.0</td>\n",
       "      <td>[{\"iso_639_1\": \"en\", \"name\": \"English\"}]</td>\n",
       "      <td>Released</td>\n",
       "      <td>Lost in our world, found in another.</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   movie_id                                               cast  \\\n",
       "0     19995  [{\"cast_id\": 242, \"character\": \"Jake Sully\", \"...   \n",
       "1       285  [{\"cast_id\": 4, \"character\": \"Captain Jack Spa...   \n",
       "2    206647  [{\"cast_id\": 1, \"character\": \"James Bond\", \"cr...   \n",
       "3     49026  [{\"cast_id\": 2, \"character\": \"Bruce Wayne / Ba...   \n",
       "4     49529  [{\"cast_id\": 5, \"character\": \"John Carter\", \"c...   \n",
       "\n",
       "                                                crew     budget  \\\n",
       "0  [{\"credit_id\": \"52fe48009251416c750aca23\", \"de...  237000000   \n",
       "1  [{\"credit_id\": \"52fe4232c3a36847f800b579\", \"de...  300000000   \n",
       "2  [{\"credit_id\": \"54805967c3a36829b5002c41\", \"de...  245000000   \n",
       "3  [{\"credit_id\": \"52fe4781c3a36847f81398c3\", \"de...  250000000   \n",
       "4  [{\"credit_id\": \"52fe479ac3a36847f813eaa3\", \"de...  260000000   \n",
       "\n",
       "                                              genres  \\\n",
       "0  [{\"id\": 28, \"name\": \"Action\"}, {\"id\": 12, \"nam...   \n",
       "1  [{\"id\": 12, \"name\": \"Adventure\"}, {\"id\": 14, \"...   \n",
       "2  [{\"id\": 28, \"name\": \"Action\"}, {\"id\": 12, \"nam...   \n",
       "3  [{\"id\": 28, \"name\": \"Action\"}, {\"id\": 80, \"nam...   \n",
       "4  [{\"id\": 28, \"name\": \"Action\"}, {\"id\": 12, \"nam...   \n",
       "\n",
       "                                       homepage  \\\n",
       "0                   http://www.avatarmovie.com/   \n",
       "1  http://disney.go.com/disneypictures/pirates/   \n",
       "2   http://www.sonypictures.com/movies/spectre/   \n",
       "3            http://www.thedarkknightrises.com/   \n",
       "4          http://movies.disney.com/john-carter   \n",
       "\n",
       "                                            keywords original_language  \\\n",
       "0  [{\"id\": 1463, \"name\": \"culture clash\"}, {\"id\":...                en   \n",
       "1  [{\"id\": 270, \"name\": \"ocean\"}, {\"id\": 726, \"na...                en   \n",
       "2  [{\"id\": 470, \"name\": \"spy\"}, {\"id\": 818, \"name...                en   \n",
       "3  [{\"id\": 849, \"name\": \"dc comics\"}, {\"id\": 853,...                en   \n",
       "4  [{\"id\": 818, \"name\": \"based on novel\"}, {\"id\":...                en   \n",
       "\n",
       "                             original_title  \\\n",
       "0                                    Avatar   \n",
       "1  Pirates of the Caribbean: At World's End   \n",
       "2                                   Spectre   \n",
       "3                     The Dark Knight Rises   \n",
       "4                               John Carter   \n",
       "\n",
       "                                            overview  \\\n",
       "0  In the 22nd century, a paraplegic Marine is di...   \n",
       "1  Captain Barbossa, long believed to be dead, ha...   \n",
       "2  A cryptic message from Bond’s past sends him o...   \n",
       "3  Following the death of District Attorney Harve...   \n",
       "4  John Carter is a war-weary, former military ca...   \n",
       "\n",
       "                                production_companies  \\\n",
       "0  [{\"name\": \"Ingenious Film Partners\", \"id\": 289...   \n",
       "1  [{\"name\": \"Walt Disney Pictures\", \"id\": 2}, {\"...   \n",
       "2  [{\"name\": \"Columbia Pictures\", \"id\": 5}, {\"nam...   \n",
       "3  [{\"name\": \"Legendary Pictures\", \"id\": 923}, {\"...   \n",
       "4        [{\"name\": \"Walt Disney Pictures\", \"id\": 2}]   \n",
       "\n",
       "                                production_countries release_date     revenue  \\\n",
       "0  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2009-12-10  2787965087   \n",
       "1  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2007-05-19   961000000   \n",
       "2  [{\"iso_3166_1\": \"GB\", \"name\": \"United Kingdom\"...   2015-10-26   880674609   \n",
       "3  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2012-07-16  1084939099   \n",
       "4  [{\"iso_3166_1\": \"US\", \"name\": \"United States o...   2012-03-07   284139100   \n",
       "\n",
       "   runtime                                   spoken_languages    status  \\\n",
       "0    162.0  [{\"iso_639_1\": \"en\", \"name\": \"English\"}, {\"iso...  Released   \n",
       "1    169.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]  Released   \n",
       "2    148.0  [{\"iso_639_1\": \"fr\", \"name\": \"Fran\\u00e7ais\"},...  Released   \n",
       "3    165.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]  Released   \n",
       "4    132.0           [{\"iso_639_1\": \"en\", \"name\": \"English\"}]  Released   \n",
       "\n",
       "                                          tagline  rating  \n",
       "0                     Enter the World of Pandora.       3  \n",
       "1  At the end of the world, the adventure begins.       3  \n",
       "2                           A Plan No One Escapes       3  \n",
       "3                                 The Legend Ends       3  \n",
       "4            Lost in our world, found in another.       3  "
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "3b4bc67a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "movie_id    0.054301\n",
       "rating      0.194676\n",
       "runtime     0.221067\n",
       "budget      0.682392\n",
       "revenue     1.000000\n",
       "Name: revenue, dtype: float64"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_df.corr()['revenue'].sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "b21d46fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "final_x_train = scalers.fit_transform(x_train)\n",
    "final_x_val = scalers.fit_transform(x_val)\n",
    "final_x_train = pd.DataFrame(data=final_x_train, columns=x_train.columns)\n",
    "final_x_val = pd.DataFrame(data=final_x_val, columns=x_val.columns)\n",
    "x_train_s = final_x_train.copy()\n",
    "x_val_s = final_x_val.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "a29c4c85",
   "metadata": {},
   "outputs": [],
   "source": [
    "final_x_train = scalerm.fit_transform(x_train)\n",
    "final_x_val = scalerm.fit_transform(x_val)\n",
    "final_x_train = pd.DataFrame(data=final_x_train, columns=x_train.columns)\n",
    "final_x_val = pd.DataFrame(data=final_x_val, columns=x_val.columns)\n",
    "x_train_m = final_x_train.copy()\n",
    "x_val_m = final_x_val.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "1130ceab",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn import linear_model\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn import metrics\n",
    "from sklearn import svm\n",
    "import scipy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "fe0ad923",
   "metadata": {},
   "outputs": [],
   "source": [
    "model = linear_model.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "c167cf68",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 82,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(x_train_m, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "8f2762b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "predict = model.predict(x_val_m)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "263e04cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "mse = mean_squared_error(predict,y_val)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "4d0f8674",
   "metadata": {},
   "outputs": [],
   "source": [
    "correlation = scipy.stats.pearsonr(predict, y_val)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "ba9dd75d",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame({\n",
    "    'zid': ['z5203592'],\n",
    "    'MSE': [mse],\n",
    "    'correlation':[correlation]\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "b505401c",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('z5203592.PART1.summary.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "98a0add2",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = pd.DataFrame({\n",
    "    'movie_id':movies_id,\n",
    "    'predicted_revenue': predict\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "26130d1b",
   "metadata": {},
   "outputs": [],
   "source": [
    "df1.to_csv('z5203592.PART1.output.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "feecf9ce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       3\n",
       "1       3\n",
       "2       3\n",
       "3       3\n",
       "4       3\n",
       "       ..\n",
       "2095    2\n",
       "2096    3\n",
       "2097    2\n",
       "2098    3\n",
       "2099    2\n",
       "Name: rating, Length: 2099, dtype: int64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_rating"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "49381780",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_rating.drop(y_train_rating.tail(1).index,inplace=True)\n",
    "y_train_rating = y_train_rating.map({2: 0, 3: 1})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "a91a0f91",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.series.Series"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(y_train_rating)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "99a2b1c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\env\\ad\\lib\\site-packages\\sklearn\\svm\\_base.py:986: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  \"the number of iterations.\", ConvergenceWarning)\n"
     ]
    }
   ],
   "source": [
    "clf = svm.LinearSVC()\n",
    "clf.fit(x_train_s, y_train_rating)\n",
    "y_pred = clf.predict(x_val_s)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "3c639dcf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>cast</th>\n",
       "      <th>crew</th>\n",
       "      <th>budget</th>\n",
       "      <th>genres</th>\n",
       "      <th>homepage</th>\n",
       "      <th>keywords</th>\n",
       "      <th>original_language</th>\n",
       "      <th>original_title</th>\n",
       "      <th>overview</th>\n",
       "      <th>production_companies</th>\n",
       "      <th>production_countries</th>\n",
       "      <th>runtime</th>\n",
       "      <th>spoken_languages</th>\n",
       "      <th>status</th>\n",
       "      <th>tagline</th>\n",
       "      <th>release_date_y</th>\n",
       "      <th>release_date_m</th>\n",
       "      <th>release_date_d</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2.397066</td>\n",
       "      <td>2.184224</td>\n",
       "      <td>3.885007</td>\n",
       "      <td>1.066754</td>\n",
       "      <td>0.783733</td>\n",
       "      <td>1.617079</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.245357</td>\n",
       "      <td>-1.007456</td>\n",
       "      <td>0.199497</td>\n",
       "      <td>0.725967</td>\n",
       "      <td>2.320542</td>\n",
       "      <td>0.353868</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.314695</td>\n",
       "      <td>0.544146</td>\n",
       "      <td>1.473435</td>\n",
       "      <td>-0.659802</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.445978</td>\n",
       "      <td>-0.008188</td>\n",
       "      <td>5.254768</td>\n",
       "      <td>0.276258</td>\n",
       "      <td>1.461194</td>\n",
       "      <td>1.194068</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.499264</td>\n",
       "      <td>-0.651873</td>\n",
       "      <td>-0.247510</td>\n",
       "      <td>-0.527926</td>\n",
       "      <td>2.653391</td>\n",
       "      <td>-0.513450</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.414381</td>\n",
       "      <td>0.311921</td>\n",
       "      <td>-0.608627</td>\n",
       "      <td>0.417820</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2.222086</td>\n",
       "      <td>2.281031</td>\n",
       "      <td>4.058944</td>\n",
       "      <td>0.295322</td>\n",
       "      <td>1.330505</td>\n",
       "      <td>-0.259174</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.245357</td>\n",
       "      <td>-0.342672</td>\n",
       "      <td>-0.295919</td>\n",
       "      <td>0.725967</td>\n",
       "      <td>1.654843</td>\n",
       "      <td>3.481152</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.471739</td>\n",
       "      <td>1.240821</td>\n",
       "      <td>0.878560</td>\n",
       "      <td>1.255970</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.208424</td>\n",
       "      <td>3.210519</td>\n",
       "      <td>4.167656</td>\n",
       "      <td>1.066283</td>\n",
       "      <td>0.783733</td>\n",
       "      <td>1.739016</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.909630</td>\n",
       "      <td>0.524297</td>\n",
       "      <td>0.182752</td>\n",
       "      <td>-0.527926</td>\n",
       "      <td>2.463192</td>\n",
       "      <td>-0.513450</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.872814</td>\n",
       "      <td>0.892483</td>\n",
       "      <td>-0.013752</td>\n",
       "      <td>0.058612</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.011622</td>\n",
       "      <td>2.001873</td>\n",
       "      <td>4.385078</td>\n",
       "      <td>0.288894</td>\n",
       "      <td>1.375897</td>\n",
       "      <td>1.039937</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-0.222314</td>\n",
       "      <td>0.078253</td>\n",
       "      <td>-1.396173</td>\n",
       "      <td>-0.527926</td>\n",
       "      <td>0.894043</td>\n",
       "      <td>-0.513450</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.188863</td>\n",
       "      <td>0.892483</td>\n",
       "      <td>-1.203502</td>\n",
       "      <td>-1.019009</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       cast      crew    budget    genres  homepage  keywords  \\\n",
       "0  2.397066  2.184224  3.885007  1.066754  0.783733  1.617079   \n",
       "1  0.445978 -0.008188  5.254768  0.276258  1.461194  1.194068   \n",
       "2  2.222086  2.281031  4.058944  0.295322  1.330505 -0.259174   \n",
       "3  4.208424  3.210519  4.167656  1.066283  0.783733  1.739016   \n",
       "4  0.011622  2.001873  4.385078  0.288894  1.375897  1.039937   \n",
       "\n",
       "   original_language  original_title  overview  production_companies  \\\n",
       "0                0.0       -1.245357 -1.007456              0.199497   \n",
       "1                0.0        2.499264 -0.651873             -0.247510   \n",
       "2                0.0       -1.245357 -0.342672             -0.295919   \n",
       "3                0.0        0.909630  0.524297              0.182752   \n",
       "4                0.0       -0.222314  0.078253             -1.396173   \n",
       "\n",
       "   production_countries   runtime  spoken_languages  status   tagline  \\\n",
       "0              0.725967  2.320542          0.353868     0.0 -0.314695   \n",
       "1             -0.527926  2.653391         -0.513450     0.0  0.414381   \n",
       "2              0.725967  1.654843          3.481152     0.0 -0.471739   \n",
       "3             -0.527926  2.463192         -0.513450     0.0 -0.872814   \n",
       "4             -0.527926  0.894043         -0.513450     0.0  0.188863   \n",
       "\n",
       "   release_date_y  release_date_m  release_date_d  \n",
       "0        0.544146        1.473435       -0.659802  \n",
       "1        0.311921       -0.608627        0.417820  \n",
       "2        1.240821        0.878560        1.255970  \n",
       "3        0.892483       -0.013752        0.058612  \n",
       "4        0.892483       -1.203502       -1.019009  "
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train_s.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "c39f7bc9",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_val_rating = y_val_rating.map({2:0,3:1})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "d3de19bb",
   "metadata": {},
   "outputs": [],
   "source": [
    "accuracy = metrics.accuracy_score(y_val_rating, y_pred)\n",
    "recall = metrics.recall_score(y_val_rating, y_pred, average='macro')\n",
    "precision = metrics.precision_score(y_val_rating, y_pred, average='macro')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "f07bbc94",
   "metadata": {},
   "outputs": [],
   "source": [
    "pd2 = pd.DataFrame({\n",
    "    'zid': ['z5203592 '],\n",
    "    'average_precision': [precision],\n",
    "    'average_recall': [recall],\n",
    "    'accuracy': [accuracy]\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "f6c8e66c",
   "metadata": {},
   "outputs": [],
   "source": [
    "pd2.to_csv('z5203592.PART2.summary.csv',index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "2494be40",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred = pd.Series(data=y_pred)\n",
    "y_pred = y_pred.map({\n",
    "    0:2,1:3\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "faba20fc",
   "metadata": {},
   "outputs": [],
   "source": [
    "pd3 = pd.DataFrame({\n",
    "    'movie_id':movies_id,\n",
    "    'predicted_rating':y_pred\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "id": "bfb41e40",
   "metadata": {},
   "outputs": [],
   "source": [
    "pd3.to_csv(\"z5203592.PART2.output.csv\",index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "16fe6860",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2dbaba36",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
